home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / misc / emu / amiSPIMsrc.lha / Documentation / SPIM_and_LINUX < prev    next >
Internet Message Format  |  1993-04-05  |  12KB

  1. Received: from cs.wisc.edu by primost.cs.wisc.edu; Sat, 3 Apr 93 14:49:34 -0600
  2. Received: from ursa.calvin.edu by cs.wisc.edu; Sat, 3 Apr 93 14:49:27 -0600
  3. Received: by Calvin.EDU (4.1/SMI-4.1)
  4.     id AA09340; Sat, 3 Apr 93 15:49:18 EST
  5. From: mjr@Calvin.EDU (Matt Ranney)
  6. Message-Id: <9304032049.AA09340@Calvin.EDU>
  7. Subject: Re: spim under linux
  8. To: larus
  9. Date: Sat, 3 Apr 93 15:49:18 EST
  10. In-Reply-To: <9304032011.AA04577@primost.cs.wisc.edu> from "James Larus" at Apr 3, 93 02:11:32 pm
  11. X-Mailer: ELM [version 2.4beta PL3]
  12. Content-Type: text
  13. Content-Length: 11600     
  14.  
  15. James Larus Writes...
  16. ) Sure, I'd like to see them.  I'm not sure they are generally useful,
  17. ) but with permission, I'd like include them with the distributed copy
  18. ) of SPIM.
  19.  
  20. No problem.  They weren't that hard to do, and you can feel free to
  21. include them or mangle them in any way you see fit.
  22.  
  23. The ioctl() stuff in spim.c I am a bit unsure of.  Linux doesn't have
  24. TIOCGETP, and it also doesn't have man pages for the corresponding
  25. ioctl() calls, so I had to kinda guess, based on my SunOS manual
  26. pages.  However, I think it does almost the same thing.
  27.  
  28. The other changes are very simple.  I'd be happy to explain any of
  29. them if you want.  A diff -C 5 follows...
  30.  
  31. diff -r -C 5 spim.orig/Imakefile spim/Imakefile
  32. *** spim.orig/Imakefile    Fri Sep 18 13:43:00 1992
  33. --- spim/Imakefile    Sat Apr  3 15:42:44 1993
  34. ***************
  35. *** 56,74 ****
  36.   # on the VAX).
  37.   #
  38.   
  39.   # Full path for directory that will hold the trap handler file (default:
  40.   # SPIM source directory):
  41. ! TRAP_DIR = /var/scratch/lib
  42.   
  43.   
  44.   # Full path for the directory that will hold the executable files:
  45. ! BIN_DIR = /var/scratch/bin.MIPS
  46.   
  47.   
  48.   # Full path for the directory that will hold the man files:
  49. ! MAN_DIR = /var/scratch/man
  50.   
  51.   
  52.   # If host computer is big-endian (e.g. 68000's (i.e. Sun 3, HP Bobcats), RT/PC,
  53.   # SPARC, HP 700's (snakes), and some MIPS boxes), define this:
  54.   #ENDIAN=-DBIGENDIAN
  55. --- 56,74 ----
  56.   # on the VAX).
  57.   #
  58.   
  59.   # Full path for directory that will hold the trap handler file (default:
  60.   # SPIM source directory):
  61. ! TRAP_DIR = /usr/local/spim
  62.   
  63.   
  64.   # Full path for the directory that will hold the executable files:
  65. ! BIN_DIR = /usr/local/bin
  66.   
  67.   
  68.   # Full path for the directory that will hold the man files:
  69. ! MAN_DIR = /usr/local/man
  70.   
  71.   
  72.   # If host computer is big-endian (e.g. 68000's (i.e. Sun 3, HP Bobcats), RT/PC,
  73.   # SPARC, HP 700's (snakes), and some MIPS boxes), define this:
  74.   #ENDIAN=-DBIGENDIAN
  75. ***************
  76. *** 99,117 ****
  77.   
  78.   # Size of the segments when spim starts up (data segment must be >= 64K).
  79.   MEM_SIZES = -DTEXT_SIZE=65536 -DDATA_SIZE=131072 -DK_TEXT_SIZE=65536
  80.   
  81.   
  82. ! # Define these flags if your operating system libraries are missing these:
  83. ! #
  84. ! # -DNEED_VSPRINTF   If your system doesn't have vsprintf
  85. ! # -DNEED_STRTOL     If your system doesn't have strtol
  86. ! #
  87. ! # Note: Ultrix and SunOS do not need any flags.
  88. ! #       Sequent requires both flags.
  89. ! #    PC/RTs requires -DNEED_VSPRINTF
  90. ! #    Older versions of 4.3BSD requires -DNEED_STRTOL
  91.   
  92.   SYS_FLAGS =
  93.   
  94.   #
  95.   # END OF PARAMETERS
  96. --- 99,117 ----
  97.   
  98.   # Size of the segments when spim starts up (data segment must be >= 64K).
  99.   MEM_SIZES = -DTEXT_SIZE=65536 -DDATA_SIZE=131072 -DK_TEXT_SIZE=65536
  100.   
  101.   
  102. ! /* Define these flags if your operating system libraries are missing these:
  103. !  -DNEED_VSPRINTF   If your system doesn't have vsprintf
  104. !  -DNEED_STRTOL     If your system doesn't have strtol
  105. !  Note: Ultrix and SunOS do not need any flags.
  106. !        Sequent requires both flags.
  107. !     PC/RTs requires -DNEED_VSPRINTF
  108. !     Older versions of 4.3BSD requires -DNEED_STRTOL */
  109.   
  110.   SYS_FLAGS =
  111.   
  112.   #
  113.   # END OF PARAMETERS
  114. ***************
  115. *** 139,149 ****
  116.   LEXCFLAGS = -O
  117.   YFLAGS = -d
  118.   
  119.   DEPLIBS = XawClientDepLibs
  120.   LOCALLIBS = XawClientLibs
  121. ! CDEBUGFLAGS = -g
  122.   EXTRA_DEFINES = $(ENDIAN) $(MEM_SIZES) $(SYS_FLAGS) $(CL_FLAG)
  123.   
  124.   #
  125.   
  126.   #
  127. --- 139,150 ----
  128.   LEXCFLAGS = -O
  129.   YFLAGS = -d
  130.   
  131.   DEPLIBS = XawClientDepLibs
  132.   LOCALLIBS = XawClientLibs
  133. ! CDEBUGFLAGS = -O
  134. ! DEPXTOOLLIB =
  135.   EXTRA_DEFINES = $(ENDIAN) $(MEM_SIZES) $(SYS_FLAGS) $(CL_FLAG)
  136.   
  137.   #
  138.   
  139.   #
  140. diff -r -C 5 spim.orig/inst.c spim/inst.c
  141. *** spim.orig/inst.c    Thu Sep 10 21:37:33 1992
  142. --- spim/inst.c    Sat Apr  3 11:25:15 1993
  143. ***************
  144. *** 35,45 ****
  145.   #include "parser.h"
  146.   #include "scanner.h"
  147.   #include "data.h"
  148.   
  149.   
  150. ! #ifdef __STDC__
  151.   int bcmp (const void *, const void *, size_t);
  152.   #else
  153.   int bcmp ();
  154.   #endif
  155.   
  156. --- 35,45 ----
  157.   #include "parser.h"
  158.   #include "scanner.h"
  159.   #include "data.h"
  160.   
  161.   
  162. ! #if defined(__STDC__) && !defined(linux)
  163.   int bcmp (const void *, const void *, size_t);
  164.   #else
  165.   int bcmp ();
  166.   #endif
  167.   
  168. diff -r -C 5 spim.orig/mips-syscall.c spim/mips-syscall.c
  169. *** spim.orig/mips-syscall.c    Fri Sep 18 02:56:47 1992
  170. --- spim/mips-syscall.c    Sat Apr  3 11:32:41 1993
  171. ***************
  172. *** 92,102 ****
  173.   static int prog_sigmask = 0;    /* Copy of sigmask passed to system */
  174.   
  175.   static mem_addr exception_address[NSIG]; /* trampoline addresses for */
  176.                        /* each signal handler */
  177.   
  178. ! static struct sigvec sighandler[NSIG]; /* Map to program handlers */
  179.   
  180.   static int prog_fds[OPEN_MAX];    /* Map from program fds to simulator fds */
  181.   
  182.   static int fds_initialized = 0;    /* FD map initialized? */
  183.   
  184. --- 92,106 ----
  185.   static int prog_sigmask = 0;    /* Copy of sigmask passed to system */
  186.   
  187.   static mem_addr exception_address[NSIG]; /* trampoline addresses for */
  188.                        /* each signal handler */
  189.   
  190. ! #if defined(linux)
  191. ! #  define SIGBUS SIGSEGV
  192. ! #else
  193. !    static struct sigvec sighandler[NSIG]; /* Map to program handlers */
  194. ! #endif /* linux */
  195.   
  196.   static int prog_fds[OPEN_MAX];    /* Map from program fds to simulator fds */
  197.   
  198.   static int fds_initialized = 0;    /* FD map initialized? */
  199.   
  200. diff -r -C 5 spim.orig/run.c spim/run.c
  201. *** spim.orig/run.c    Wed Sep  2 17:12:03 1992
  202. --- spim/run.c    Sat Apr  3 13:17:33 1993
  203. ***************
  204. *** 45,59 ****
  205.   #include "run.h"
  206.   
  207.   
  208.   extern int errno;
  209.   
  210. ! #ifdef __STDC__
  211.   long atol (const char *);
  212. ! #else
  213.   long atol ();
  214. ! #endif
  215.   
  216.   
  217.   /* Local functions: */
  218.   
  219.   #ifdef __STDC__
  220. --- 45,61 ----
  221.   #include "run.h"
  222.   
  223.   
  224.   extern int errno;
  225.   
  226. ! #if !defined (linux)
  227. ! #  if defined(__STDC__)
  228.   long atol (const char *);
  229. ! #  else
  230.   long atol ();
  231. ! #  endif /* STDC */
  232. ! #endif /* linux */
  233.   
  234.   
  235.   /* Local functions: */
  236.   
  237.   #ifdef __STDC__
  238. Only in spim: run.c~
  239. diff -r -C 5 spim.orig/spim-utils.c spim/spim-utils.c
  240. *** spim.orig/spim-utils.c    Wed Sep  2 21:51:10 1992
  241. --- spim/spim-utils.c    Sat Apr  3 11:45:11 1993
  242. ***************
  243. *** 521,531 ****
  244.   
  245.     va_start (args);
  246.   #endif
  247.     fmt = va_arg (args, char *);
  248.   
  249. ! #ifdef mips
  250.     vfprintf (stderr, fmt, args);
  251.   #else
  252.     _doprnt (fmt, args, stderr);
  253.   #endif
  254.     exit (-1);
  255. --- 521,531 ----
  256.   
  257.     va_start (args);
  258.   #endif
  259.     fmt = va_arg (args, char *);
  260.   
  261. ! #if defined(mips) || defined(linux)
  262.     vfprintf (stderr, fmt, args);
  263.   #else
  264.     _doprnt (fmt, args, stderr);
  265.   #endif
  266.     exit (-1);
  267. diff -r -C 5 spim.orig/spim.c spim/spim.c
  268. *** spim.orig/spim.c    Wed Sep 16 20:09:03 1992
  269. --- spim/spim.c    Sat Apr  3 12:54:30 1993
  270. ***************
  271. *** 1105,1115 ****
  272.   #else
  273.     va_start (args);
  274.     fmt = va_arg (args, char *);
  275.   #endif
  276.   
  277. ! #ifdef mips
  278.     vfprintf (stderr, fmt, args);
  279.   #else
  280.     _doprnt (fmt, args, stderr);
  281.   #endif
  282.     va_end (args);
  283. --- 1105,1115 ----
  284.   #else
  285.     va_start (args);
  286.     fmt = va_arg (args, char *);
  287.   #endif
  288.   
  289. ! #if defined(mips) || defined(linux)
  290.     vfprintf (stderr, fmt, args);
  291.   #else
  292.     _doprnt (fmt, args, stderr);
  293.   #endif
  294.     va_end (args);
  295. ***************
  296. *** 1138,1148 ****
  297.   #else
  298.     va_start (args);
  299.     fmt = va_arg (args, char *);
  300.   #endif
  301.   
  302. ! #ifdef mips
  303.     vfprintf (stderr, fmt, args);
  304.   #else
  305.     _doprnt (fmt, args, stderr);
  306.   #endif
  307.     va_end (args);
  308. --- 1138,1148 ----
  309.   #else
  310.     va_start (args);
  311.     fmt = va_arg (args, char *);
  312.   #endif
  313.   
  314. ! #if defined(mips) || defined(linux)
  315.     vfprintf (stderr, fmt, args);
  316.   #else
  317.     _doprnt (fmt, args, stderr);
  318.   #endif
  319.     va_end (args);
  320. ***************
  321. *** 1179,1189 ****
  322.     fp = va_arg (args, long);
  323.     f = (FILE *) fp;        /* Not too portable... */
  324.     fmt = va_arg (args, char *);
  325.   #endif
  326.   
  327. ! #ifdef mips
  328.     if (f != 0)
  329.       vfprintf (f, fmt, args);
  330.     else
  331.       vfprintf (stdout, fmt, args);
  332.   #else
  333. --- 1179,1189 ----
  334.     fp = va_arg (args, long);
  335.     f = (FILE *) fp;        /* Not too portable... */
  336.     fmt = va_arg (args, char *);
  337.   #endif
  338.   
  339. ! #if defined(mips) || defined(linux)
  340.     if (f != 0)
  341.       vfprintf (f, fmt, args);
  342.     else
  343.       vfprintf (stdout, fmt, args);
  344.   #else
  345. ***************
  346. *** 1207,1218 ****
  347.     read (console_in, str, n);
  348.   }
  349.   
  350.   
  351.   static int console_state_saved;
  352.   static struct sgttyb saved_console_state;
  353.   
  354.   /* Give the console to the program for IO. */
  355.   
  356.   #ifdef __STDC__
  357.   static void
  358. --- 1207,1221 ----
  359.     read (console_in, str, n);
  360.   }
  361.   
  362.   
  363.   static int console_state_saved;
  364. + #ifdef linux
  365. + static struct termios saved_console_state;
  366. + #else
  367.   static struct sgttyb saved_console_state;
  368. ! #endif
  369.   
  370.   /* Give the console to the program for IO. */
  371.   
  372.   #ifdef __STDC__
  373.   static void
  374. ***************
  375. *** 1220,1236 ****
  376.   #else
  377.   static void
  378.   console_to_program ()
  379.   #endif
  380.   {
  381.     int flags;
  382. !   
  383.     ioctl (console_in, TIOCGETP, (char *) &saved_console_state);
  384.     flags = saved_console_state.sg_flags;
  385.     saved_console_state.sg_flags = (flags | CBREAK) & ~(CRMOD|ECHO);
  386.     ioctl (console_in, TIOCSETP, (char *) &saved_console_state);
  387.     saved_console_state.sg_flags = flags;
  388.     console_state_saved = 1;
  389.   }
  390.   
  391.   
  392.   /* Return the console to SPIM. */
  393. --- 1223,1250 ----
  394.   #else
  395.   static void
  396.   console_to_program ()
  397.   #endif
  398.   {
  399. + #ifdef linux
  400. +   struct termios state;
  401. +   ioctl(console_in, TCGETS, &saved_console_state);
  402. +   ioctl(console_in, TCGETS, &state);
  403. +   state.c_lflag &= ICANON | ~(ECHO);
  404. +   state.c_cc[VTIME] = 0;
  405. +   state.c_cc[VMIN] = 0;
  406. +   ioctl(console_in, TCSETS, &state);
  407. + #else
  408.     int flags;
  409.     ioctl (console_in, TIOCGETP, (char *) &saved_console_state);
  410.     flags = saved_console_state.sg_flags;
  411.     saved_console_state.sg_flags = (flags | CBREAK) & ~(CRMOD|ECHO);
  412.     ioctl (console_in, TIOCSETP, (char *) &saved_console_state);
  413.     saved_console_state.sg_flags = flags;
  414. + #endif
  415.     console_state_saved = 1;
  416.   }
  417.   
  418.   
  419.   /* Return the console to SPIM. */
  420. ***************
  421. *** 1241,1252 ****
  422. --- 1255,1271 ----
  423.   #else
  424.   static void
  425.   console_to_spim ()
  426.   #endif
  427.   {
  428. + #ifdef linux
  429. +   if (console_state_saved)
  430. +     ioctl(console_in, TCSETS, &saved_console_state);
  431. + #else
  432.     if (console_state_saved)
  433.       ioctl (console_in, TIOCSETP, (char *) &saved_console_state);
  434. + #endif
  435.   }
  436.   
  437.        
  438.   #ifdef __STDC__
  439.   int
  440. diff -r -C 5 spim.orig/spim.h spim/spim.h
  441. *** spim.orig/spim.h    Thu Sep 10 21:36:25 1992
  442. --- spim/spim.h    Sat Apr  3 11:52:06 1993
  443. ***************
  444. *** 20,32 ****
  445.   
  446.   
  447.   /* $Header: /home/primost/larus/UW/Funding/WWT.NSF/RCS/spim.h,v 3.13 1992/09/10 21:36:21 larus Exp larus $
  448.   */
  449.   
  450.   #define NULL 0
  451.   
  452.   #define streq(s1, s2) !strcmp(s1, s2)
  453.   
  454.   
  455.   /* Round V to next greatest B boundary */
  456.   
  457. --- 20,33 ----
  458.   
  459.   
  460.   /* $Header: /home/primost/larus/UW/Funding/WWT.NSF/RCS/spim.h,v 3.13 1992/09/10 21:36:21 larus Exp larus $
  461.   */
  462.   
  463. + #ifndef NULL
  464.   #define NULL 0
  465. + #endif
  466.   
  467.   #define streq(s1, s2) !strcmp(s1, s2)
  468.   
  469.   
  470.   /* Round V to next greatest B boundary */
  471.   
  472. ***************
  473. *** 49,60 ****
  474.   /* Useful and pervasive declarations: */
  475.   
  476.   #ifdef __STDC__
  477.   #include <stdlib.h>
  478.   #include <string.h>
  479. ! void bzero (void *, size_t);
  480. ! void bcopy (const void *, void *, size_t);
  481.   #else
  482.   double atof ();
  483.   int atoi ();
  484.   void bzero ();
  485.   void bcopy ();
  486. --- 50,65 ----
  487.   /* Useful and pervasive declarations: */
  488.   
  489.   #ifdef __STDC__
  490.   #include <stdlib.h>
  491.   #include <string.h>
  492. ! #if defined(linux)
  493. ! # include <termios.h>
  494. ! #else
  495. !   void bzero (void *, size_t);
  496. !   void bcopy (const void *, void *, size_t);
  497. ! #endif /* linux */
  498.   #else
  499.   double atof ();
  500.   int atoi ();
  501.   void bzero ();
  502.   void bcopy ();
  503.  
  504.  
  505.  
  506. -- 
  507. Matt Ranney -  mjr@calvin.edu
  508.   "You know, I don't think theres a man, woman, or child alive today
  509.    who doesn't enjoy a lovely beverage."  -DL
  510.